Make the Python PickleCache run a GC when it evicts weakly-referenced objects. #162
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes hard-to-debug ZODB ConnectionStateError cases with persistent zope.component registrations on PyPy.
I tried to come up with a test that would also fail on CPython using circular references, but did not succeed (because part of evicting objects is clearing their dict, breaking the reference cycle).
Fixes #149. Well, band-aids it anyway. I'd like to think of a better way (the assumption that weakrefs are cleared immediately is pretty baked-in to zope.interface, at least when used with ZODB).
Currently based on #161 to avoid conflicts; only the last commit is relevant.